//导入
import http from 'wechat-http'
http.baseURL='https://live-api.itheima.net'

// 请求拦截器
http.intercept.request = (options) => {
  const defaultHeader={}
  defaultHeader.Authorization=`Bearer `+ getApp().token
  // 合并 object.assign(对象1，对象2，对象3,....)
  options.header=Object.assign({},defaultHeader,options.header)
  return options
}

// 响应拦截器
http.intercept.response =async (result) => {
  // console.log(result) 
  // result.errMsg 响应消息
  // result.data 响应数据
  // http 响应状态码
  // 拦截器处理后的响应结果
  const {code, message, data }=result.data
  // code业务码 message业务消息 data数据业务码 10000是业务正确
  if(code===10000){
    return data
  }else{
    if(code===401){
      // 验证token过期了
      //1,刷新token.更换新的验证tokenl(拿着app.refreshToken调用/refreshToken)
      const app=getApp()
      wx.request({
       url:http.baseURL+'/refreshToken',
       method:'post',
       header:{Authorization:`Bearer `+ app.refreshToken},
       success:({data})=>{
        // console.log(data)
        if(data.code===401){
        app.setToken('token','')
        app.setToken('refreshToken','')
        const curPages=getCurrentPages()
        // console.log(curPages)
        const page=curPages.pop()
        return wx.redirectTo({
          url:'/pages/login/index?redirectUrl='+page.route
        })
        }
        if(data.code===10000){
          app.setToken('token',data.data.token)
          app.setToken('refreshToken',data.data.refreshToken)
          //2,继续完成上一次没有完成的请求
          const config=Object.assign(result.config,{
            header:{Authorization:`Bearer `+ data.data.token}
          })
          return http(config)
        }
       },
       fail:(err)=>{
        console.log(err);
       }
      })
    }
    wx.utils.toast(message||'业务错误')
    return Promise.reject(message||'业务错误')
  }
}
// 挂载到 wx 全局命名空间
wx.http = http
// 也可作为模块导出
export default http